1. Field of the Invention
The present invention generally relates to data transfer, and more specifically relates to synchronous peer to peer deployed application propagation for large clusters.
2. Related Art
One method for deploying a Java 2 Platform, Enterprise Edition (J2EE) application (Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both) to a cluster of machines (e.g., a WebSphere cluster) includes:
1) A deployment manager runs deployment tools on the application and generates deployed code; and
2. The deployment manager transfers the deployed code to the cluster members in parallel.
Because deployed applications can be very large, network bandwidth (even on a 1 gigabyte (GB) network) will quickly become a bottleneck. Once the network bandwidth of the deployment manager is exhausted, the application deploy time to the cluster will increase linearly (or worse) with the number of cluster members.
As an example, for a 1331 MB application deployed to 450 cluster members via a GB network:                1 GB network bandwidth=125 megabytes (MB)/sec; and        Hard disk (HD) limited transfer rate=25 MB/sec.After the first 5 connections, bandwidth decreases linearly with each additional cluster member:        Deployment speed=(125 MB/sec)/445 cluster members=0.28 MB/sec; and        Total deployment time=1331 MB/0.28 MB/sec=4750 seconds=79 minutes.Thus, it will take 79 minutes to deploy the application to each member of the cluster.        
One solution customers have to this problem is to invest in expensive network upgrades that are typically unnecessary for their day to day needs. Another, software-based solution is to use a peer to peer downloader. This type of program is designed to catalog, search and download files asynchronously from a peer to peer network, often downloading parts of a file from several different machines in order to maximize download speed. The process is asynchronous, because a file must be completely downloaded to a node before it can be sent out from that node, which limits the speed at which downloads can occur.